package com.dyj.tiktok.domain.vo;

import com.alibaba.fastjson.annotation.JSONField;
import com.dyj.tiktok.enums.PostStatusEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class QueryPostStatusRespVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 状态
     * PROCESSING_UPLOAD: 仅适用于FILE_UPLOAD。表示上传正在进行中。
     * PROCESSING_DOWNLOAD: 仅适用于PULL_FROM_URL。表示正在从 URL 下载。
     * SEND_TO_USER_INBOX: 仅当您选择上传内容时可用。表示已向创作者的收件箱发送通知，以使用 TikTok 的编辑流程完成草稿帖子。
     * PUBLISH_COMPLETE: 对于直接发布，表示内容已发布。对于上传内容，表示用户已点击收件箱通知，并已使用TikTok编辑流程成功发布媒体。
     * FAILED: 表示发生了错误，整个过程失败。
     *
     * 枚举 {@link PostStatusEnum}
     */
    private String status;

    /**
     * 失败原因
     */
    @JSONField(name = "fail_reason")
    private String failReason;

    /**
     * 公开可用的发布id
     * post_id仅当帖子发布供公众查看并且已通过 TikTok 审核流程批准时才会返回。
     * 创作者可以使用上传的内容草稿来创作多篇内容。
     */
    @JSONField(name = "publicaly_available_post_id")
    private List<Long> publicalyAvailablePostId;

    /**
     * 仅适用于 FILE_UPLOAD
     * 已上传的字节数
     */
    @JSONField(name = "uploaded_bytes")
    private Long uploadedBytes;

    /**
     * 仅适用于 PULL_FROM_URL
     * 下载的字节数
     */
    @JSONField(name = "downloaded_bytes")
    private Long downloadedBytes;


}
